package br.ufrj.dcc.comp2.musica.controle;
 
import java.awt.CardLayout;
 
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
 
import br.ufrj.dcc.comp2.musica.vista.PainelCadastrarDisciplinas;
import br.ufrj.dcc.comp2.musica.vista.PainelCadastrarPessoa;
import br.ufrj.dcc.comp2.musica.vista.PainelCadastrarTurmas;
import br.ufrj.dcc.comp2.musica.vista.PainelEditarCursos;
import br.ufrj.dcc.comp2.musica.vista.PainelEmitirRelatorio;
import br.ufrj.dcc.comp2.musica.vista.PainelFormularioDadosPessoais;
import br.ufrj.dcc.comp2.musica.vista.PainelGerenciarInscricoes;
import br.ufrj.dcc.comp2.musica.vista.PainelGerenciarTurmas;
import br.ufrj.dcc.comp2.musica.vista.PainelMenuAluno;
import br.ufrj.dcc.comp2.musica.vista.PainelMenuFuncionario;
import br.ufrj.dcc.comp2.musica.vista.PainelMenuProfessor;
import br.ufrj.dcc.comp2.musica.vista.PainelPermissoesAdmin;
import br.ufrj.dcc.comp2.musica.vista.PainelRelatoriosAluno;
import br.ufrj.dcc.comp2.musica.vista.PainelSolicitarIncricao;
 
public class ControleCardLayout {
     
        private String ultimoPainel;
     
        private JPanel cards;
         
        //Paineis de Aluno
        private JPanel painelMenuAluno;
        private JPanel painelGerenciarInscricoes;
        private JPanel painelSolicitarIncricao;
        private JPanel painelFormularioDadosPessoais;
        private JTabbedPane painelRelatoriosAluno;
 
        //Paineis de Professor
        private JPanel painelPrincipalProfessor;
        private JPanel painelGerenciarNotas ;
        private JPanel painelHistoricoProfissional;
        private JPanel painelEmitirRelatorio;
         
        //Paineis de Funcionario
        private JPanel painelMenuAdministrador;
        private JPanel painelCadastrarTurmas;
        private JPanel painelCadastrarDisciplinas;
        private JPanel painelCadastrarPessoa;
        private JPanel painelEditarCursos;
        private JPanel painelPermissoes;
         
        public ControleCardLayout(String tipo) {
            cards = new JPanel(new CardLayout());
            carregaPaineis(tipo);
     
        }
         
        public void setCard(String nome) {
            ((CardLayout) cards.getLayout()).show(cards, nome);
        }
 
         
        public JPanel getPainel() {
            return cards;
        }
 
        private void carregaPaineis (String tipo){
             
            cards.add(new JPanel(), "Inicio");
            if (tipo.equalsIgnoreCase("aluno")) {
                adicionaPaineisAluno();                 
            }
            else if (tipo.equalsIgnoreCase("professor")) {
                adicionaPaineisProfessor();
            }
            else if (tipo.equalsIgnoreCase("funcionario")){
                adicionaPaineisFuncionario();
            }
        }
         
        private void adicionaPaineisAluno(){
 
            painelMenuAluno = new PainelMenuAluno(this);
            painelGerenciarInscricoes = new PainelGerenciarInscricoes(this);
            painelFormularioDadosPessoais = new PainelFormularioDadosPessoais(this);
            painelRelatoriosAluno = new PainelRelatoriosAluno(this);
            painelSolicitarIncricao = new PainelSolicitarIncricao(this);
             
             
            cards.add("Menu",painelMenuAluno);
            cards.add("Gerenciar Inscricoes",painelGerenciarInscricoes);
            cards.add("Dados Pessoais",painelFormularioDadosPessoais);
            cards.add("Relatorios",painelRelatoriosAluno);
            cards.add("Solicitar Inscricao",painelSolicitarIncricao);
        }
         
        private void adicionaPaineisProfessor(){
 
            painelPrincipalProfessor = new PainelMenuProfessor(this);
            painelFormularioDadosPessoais = new PainelFormularioDadosPessoais(this);
            painelGerenciarNotas = new PainelGerenciarTurmas(this);
            /*painelHistoricoProfissional = new PainelHistoricoProfissional(this);*/
            painelEmitirRelatorio = new PainelEmitirRelatorio(this);
             
            cards.add(painelPrincipalProfessor, "Menu");
            cards.add("Gerenciar Turmas",painelGerenciarNotas);
            cards.add("Dados Pessoais",painelFormularioDadosPessoais);
            /*cards.add("Historico",painelHistoricoProfissional);*/
            cards.add("Relatorios",painelEmitirRelatorio);
 
        }
         
        private void adicionaPaineisFuncionario(){
 
            painelMenuAdministrador = new PainelMenuFuncionario(this);
            /*Nao ha botao para este
            painelFormularioDadosPessoais = new PainelFormularioDadosPessoais(this);
            */
            painelCadastrarTurmas = new PainelCadastrarTurmas(this);
            painelCadastrarDisciplinas = new PainelCadastrarDisciplinas(this);
            painelCadastrarPessoa = new PainelCadastrarPessoa(this);
            painelEditarCursos = new PainelEditarCursos(this);
            painelPermissoes = new PainelPermissoesAdmin(this);
             
            cards.add(painelMenuAdministrador, "Menu");
            /*cards.add("Dados Pessoais",painelFormularioDadosPessoais);*/
            cards.add("Cadastrar Turmas",painelCadastrarTurmas);
            cards.add("Cadastrar Disciplinas",painelCadastrarDisciplinas);
            cards.add("Cadastrar Pessoas",painelCadastrarPessoa);
            cards.add("Editar Cursos",painelEditarCursos);
            cards.add("Permissoes",painelPermissoes);
 
        }
 
        public String getUltimoPainel() {
          return ultimoPainel;
        }
 
        public void setUltimoPainel(String ultimoPainel) {
           this.ultimoPainel = ultimoPainel;
        }
 
        public PainelCadastrarPessoa getPainelCadastrarPessoa() {
            return (PainelCadastrarPessoa) painelCadastrarPessoa;
        }

		public PainelCadastrarTurmas getPainelCadastrarTurmas() {
			return (PainelCadastrarTurmas)painelCadastrarTurmas;
		}

		public PainelEditarCursos getPainelEditarCursos() {
			return (PainelEditarCursos)painelEditarCursos;
		}

		public PainelSolicitarIncricao getPainelSolicitarIncricao() {
			return (PainelSolicitarIncricao)painelSolicitarIncricao;
}

		public PainelGerenciarTurmas getPainelGerenciarNotas() {
			return (PainelGerenciarTurmas) painelGerenciarNotas;
		}
         
}